//
//  VisitorLoginView.swift
//  Weibo
//
//  Created by 闫博123 on 16/1/11.
//  Copyright © 2016年 闫博123. All rights reserved.
//

import UIKit
import SnapKit

// 如果不遵守NSObjectProtocol协议 就无法使用weak关键字
// 声明可选的协议方法 需要在协议方法前加 optional 关键字(是OC中的关键字) 要想使用 需要在声明的协议前加上 @objc
@objc protocol visitorLoginViewDelegate : NSObjectProtocol
{
    // 协议方法
    // 用户将要注册
    optional func userWillRegister()
    
    // 用户将要登陆
    optional func userWillLogin()
}

class VisitorLoginView: UIView {
    
    // 定义代理属性 weak修饰
    // swift中属性默认是strong修饰
    weak var visitorLoginDelegate : visitorLoginViewDelegate?
    
    //MARK: 按钮监听事件方法的实现
    @objc private func loginBtnClick()
    {
        // 使用代理调用代理方法
        // visitorLoginDelegate? 可选项 相当于OC中判断是否遵守了协议
        visitorLoginDelegate?.userWillLogin?()
    }
    
    @objc private func registerBtnClick()
    {
        visitorLoginDelegate?.userWillRegister?()
    }
    
    // 外界调用的重要方法
    func setupUIWithInfo(imageName : String? , tipText : String)
    {
        if let image = imageName
        {
            circleIcon.image = UIImage(named: image)
            
            // 隐藏大房子
            bigHouse.hidden = true
            
            // 让circleIcon视图层次到最上面
            bringSubviewToFront(circleIcon)
        }
        else
        {
            // 说明当前页面在首页
            // 调用转圈圈方法
            startAnimation()
        }
        tipLabel.text = tipText
    }
    
    // 转圈圈方法
    func startAnimation()
    {
        // 基础动画
        let base = CABasicAnimation(keyPath: "transform.rotation")
        
        // 设置动画重复次数
        base.repeatCount = MAXFLOAT
        
        base.toValue = 2 * M_PI
        
        // 设置持续时间
        base.duration = 10
        
        // 设置动画完成之后 页面失去活性 不移除图层
        base.removedOnCompletion = false
        
        // 添加动画
        circleIcon.layer.addAnimation(base, forKey: nil)
    }

    override init(frame: CGRect) {
        
        super.init(frame: frame)
        
        // 设置UI
        setupUI()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    private func setupUI()
    {
        // 添加子视图
        addSubview(circleIcon)
        
        addSubview(backView)
        
        addSubview(bigHouse)
        
        addSubview(tipLabel)
        
        addSubview(loginBtn)
        
        addSubview(registerBtn)
        /*
        设置自动布局 苹果手码布局 是通过NSLayoutConstraint
        NSLayoutConstraint(item: <#T##AnyObject#>, attribute: <#T##NSLayoutAttribute#>, relatedBy: <#T##NSLayoutRelation#>, toItem: <#T##AnyObject?#>, attribute: <#T##NSLayoutAttribute#>, multiplier: <#T##CGFloat#>, constant: <#T##CGFloat#>)
        */

        // 通过SnapKit第三方框架来设置自动布局 先集成框架
        // snp_makeConstraints 添加一条约束
        circleIcon.snp_makeConstraints { (make) -> Void in
            
            make.centerX.equalTo(self.snp_centerX)
            
            // 垂直居中 tianjiapianyiliang
            make.centerY.equalTo(self.snp_centerY).offset(-60)
        }
        
        bigHouse.snp_makeConstraints { (make) -> Void in
            
            make.center.equalTo(circleIcon.snp_center)
        }
        
        tipLabel.snp_makeConstraints { (make) -> Void in
            
            make.centerX.equalTo(circleIcon)
            
            make.top.equalTo(circleIcon.snp_bottom).offset(16)
            
            // 宽度约束
            make.width.equalTo(225)
        }
        
        loginBtn.snp_makeConstraints { (make) -> Void in
            
            make.left.equalTo(tipLabel.snp_left)
            
            make.top.equalTo(tipLabel.snp_bottom).offset(16)
            
            make.width.equalTo(100)
        }
        
        registerBtn.snp_makeConstraints { (make) -> Void in
            
            make.right.equalTo(tipLabel.snp_right)
            
            make.top.equalTo(tipLabel.snp_bottom).offset(16)
            
            make.width.equalTo(100)
        }
        
        backView.snp_makeConstraints { (make) -> Void in
            
            make.top.equalTo(self.snp_top)
            
            make.left.equalTo(self.snp_left)
            
            make.right.equalTo(self.snp_right)
            
            make.bottom.equalTo(registerBtn.snp_bottom)
        }
        
        // 设置背景灰度颜色
        self.backgroundColor = UIColor(white: 0.93, alpha: 1)
        
        // 添加监听事件
        loginBtn.addTarget(self, action: "loginBtnClick", forControlEvents: .TouchUpInside)
        
        registerBtn.addTarget(self, action: "registerBtnClick", forControlEvents: .TouchUpInside)
    }
    
    // 懒加载获取所有的子视图
    
    // 背景
    lazy var backView: UIImageView = UIImageView(image: UIImage(named: "visitordiscover_feed_mask_smallicon"))
    
    // 大圈圈
    lazy var circleIcon : UIImageView = UIImageView(image: UIImage(named: "visitordiscover_feed_image_smallicon"))
    
    // 大房子
    lazy var bigHouse : UIImageView = UIImageView(image: UIImage(named: "visitordiscover_feed_image_house"))
    
    // 提示文案
    lazy var tipLabel : UILabel =
    {
       let l = UILabel()
        
        l.font = UIFont.systemFontOfSize(14)
        
        l.text = "关注一些人,回这里看看有什么惊喜"
        
        // 设置行数
        l.numberOfLines = 0
        
        l.textColor = UIColor.darkGrayColor()
        
        l.textAlignment = .Center
        
        // 设置大小
        l.sizeToFit()
        
        return l
    }()
    
    // 登录按钮
    lazy var loginBtn : UIButton =
    {
        let btn = UIButton()
        
        // 设置按钮的文字
        btn.setTitle("登陆", forState: .Normal)
        
        btn.titleLabel?.font = UIFont.systemFontOfSize(18)
        
        btn.setTitleColor(UIColor.darkGrayColor(), forState: .Normal)
        
        btn.setBackgroundImage(UIImage(named: "common_button_white_disable"), forState: .Normal)
        
        return btn
    }()
    
    // 注册按钮
    lazy var registerBtn : UIButton =
    {
        let btn = UIButton()
        
        // 设置按钮的文字
        btn.setTitle("注册", forState: .Normal)
        
        btn.titleLabel?.font = UIFont.systemFontOfSize(18)
        
        btn.setTitleColor(UIColor.orangeColor(), forState: .Normal)
        
        // 代码设置图片拉伸
        let image = UIImage(named: "common_button_white_disable")!
        
        let w = Int(image.size.width * 0.5)
        
        let h = Int(image.size.height * 0.5)
        
        btn.setBackgroundImage(image.stretchableImageWithLeftCapWidth(w, topCapHeight: h), forState: .Normal)
        
        return btn
        }()

}












